package cn.clq.ymcc.service;

import cn.clq.ymcc.domain.PayOrder;
import cn.clq.ymcc.dto.AlipayNotifyDto;
import cn.clq.ymcc.dto.PayApplyDto;
import com.baomidou.mybatisplus.service.IService;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author stone.chen
 * @since 2022-07-31
 */
public interface IPayOrderService extends IService<PayOrder> {

    /**
     * @description: 根据订单号查询支付单是否已经存在，即消费者是否已经消费了消息
     * @param: orderNo
     * @return: cn.clq.ymcc.domain.PayOrder
     * @author clqlongbao
     * @date: 2022/8/1 11:16
     */
    PayOrder selectByOrderNo(String orderNo);


    /**
     * @description:  发起支付请求，返回登陆支付宝的form表单字符串
     * @param: dto
     * @return: cn.clq.ymcc.result.JSONResult
     * @author clqlongbao
     * @date: 2022/8/1 22:18
     */
    String apply(PayApplyDto dto);


    /**
     * @description: 支付包支付成功之后，异步回调处理业务
     * @param: dto
     * @return: java.lang.String
     * @author clqlongbao
     * @date: 2022/8/3 23:24
     */
    String notify(AlipayNotifyDto dto) throws Exception;


    /**
     * @description: 支付超时，取消支付单
     * @param: orderNo
     * @return: void
     * @author clqlongbao
     * @date: 2022/8/4 3:04
     */
    void cancelOrder(String orderNo);
}
